Operator List
Arithmetic Operators
Syntax | Description | Operator Category | Operator Concept |
---|---|---|---|
a + b | Addition | stdatem.operator.arithmetic.binary | Addition |
a +& b | Overflowing Addition | stdatem.operator.arithmetic.binary | OverflowingAddition |
a +\| b | Saturating Addition | stdatem.operator.arithmetic.binary | SaturatingAddition |
a - b | Subtraction | stdatem.operator.arithmetic.binary | Subtraction |
a -&= b | Overflowing Subtraction | stdatem.operator.arithmetic.binary | OverflowingSubtraction |
a -\| b | Saturating Subtraction | stdatem.operator.arithmetic.binary | SaturatingSubtraction |
a * b | Multiplication | stdatem.operator.arithmetic.binary | Multiplication |
a *& b | Overflowing Multiplication | stdatem.operator.arithmetic.binary | OverflowingMultiplication |
a *\| b | Saturating Multiplication | stdatem.operator.arithmetic.binary | SaturatingMultiplication |
a / b | Division | stdatem.operator.arithmetic.binary | Division |
a % b | Remainder Division | stdatem.operator.arithmetic.binary | RemainderDivision |
-a | Negation | stdatem.operator.arithmetic.unary | Negation |
-&a | Overflowing Negation | stdatem.operator.arithmetic.unary | OverflowingNegation |
a ** b | Power | stdatem.operator.arithmetic.binary | Power |
a **& b | Overflowing Power | stdatem.operator.arithmetic.binary | OverflowingPower |
a **\| b | Saturating Power | stdatem.operator.arithmetic.binary | SaturatingPower |
Assignment Operators
Syntax | Description | Operator Category | Operator Concept |
---|---|---|---|
a = b | Simple Assignment | stdatem.operator.assignment.binary | Assignment |
a += b | Addition Assignment | stdatem.operator.assignment.binary | AdditionAssignment |
a +&= b | Overflowing Addition Assignment | stdatem.operator.assignment.binary | OverflowingAdditionAssignment |
a +\|= b | Saturating Addition Assignment | stdatem.operator.assignment.binary | SaturatingAdditionAssignment |
a -= b | Subtraction Assignment | stdatem.operator.assignment.binary | SubtractionAssignment |
a -&= b | Overflowing Subtraction Assignment | stdatem.operator.assignment.binary | OverflowingSubtractionAssignment |
a -\|= b | Saturating Subtraction Assignment | stdatem.operator.assignment.binary | SaturatingSubtractionAssignment |
a *= b | Multiplication Assignment | stdatem.operator.assignment.binary | MultiplicationAssignment |
a *&= b | Overflowing Multiplication Assignment | stdatem.operator.assignment.binary | OverflowingMultiplicationAssignment |
a *\|= b | Saturating Multiplication Assignment | stdatem.operator.assignment.binary | SaturatingMultiplicationAssignment |
a /= b | Division Assignment | stdatem.operator.assignment.binary | DivisionAssignmentAssignment |
a %= b | Remainder Division Assignment | stdatem.operator.assignment.binary | RemainderDivisionAssignment |
a **= b | Power Assignment | stdatem.operator.assignment.binary | PowerAssignment |
a **&= b | Overflowing Power Assignment | stdatem.operator.assignment.binary | OverflowingPowerAssignment |
a **\|= b | Saturating Power Assignment | stdatem.operator.assignment.binary | SaturatingPowerAssignment |
<<= | Bitwise Left Shift Assignment | stdatem.operator.assignment.binary | BitwiseLeftShiftAssignment |
<<\|= | Saturating Bitwise Left Shift Assignment | stdatem.operator.assignment.binary | SaturatingBitwiseLeftShiftAssignment |
>>= | Bitwise Right Shift Assignment | stdatem.operator.assignment.binary | BitwiseRightShiftAssignment |
&= | Bitwise AND Assignment | stdatem.operator.assignment.binary | BitwiseAndAssignment |
\|= | Bitwise OR Assignment | stdatem.operator.assignment.binary | BitwiseOrAssignment |
~= | Bitwise NOT Assignment | stdatem.operator.assignment.binary | BitwiseNotAssignment |
Comparison Operators
Syntax | Description | Operator Category | Operator Concept |
---|---|---|---|
a > b | Greater than | stdatem.operator.comparison.binary | GreaterThan |
a < b | Less than | stdatem.operator.comparison.binary | LessThan |
a >= b | Greater than or Equal to | stdatem.operator.comparison.binary | GreaterThanOrEqual |
a <= b | Less than or Equal to | stdatem.operator.comparison.binary | LessThanOrEqual |
a != b | Not Equal to | stdatem.operator.comparison.binary | NotEqual |
a == b | Equal to | stdatem.operator.comparison.binary | Equal |
a <=> b | Three-way Comparison | stdatem.operator.comparison.binary | ThreeWayComparison |
Logical Operators
Syntax | Description | Operator Category | Operator Concept |
---|---|---|---|
not a | Logical NOT | stdatem.operator.logical.unary | LogicalNot |
a and b | Logical AND | stdatem.operator.logical.binary | LogicalAnd |
a or b | Logical OR | stdatem.operator.logical.binary | LogicalOr |
Bitwise Operators
Syntax | Description | Operator Category | Operator Concept |
---|---|---|---|
~a | Bitwise NOT | stdatem.operator.bitwise.unary | BitwiseNot |
a & b | Bitwise AND | stdatem.operator.bitwise.binary | BitwiseAnd |
a \| b | Bitwise OR | stdatem.operator.bitwise.binary | BitwiseOr |
a ^ b | Bitwise XOR | stdatem.operator.bitwise.binary | BitwiseXor |
a << b | Bitwise Left Shift | stdatem.operator.bitwise.binary | BitwiseLeftShift |
a <<\| b | Saturating Bitwise Left Shift | stdatem.operator.bitwise.binary | SaturatingBitwiseLeftShift |
a >> b | Bitwise Right Shift | stdatem.operator.bitwise.binary | BitwiseRightShift |
Pointer Operators
Syntax | Description | Operator Category | Operator Concept |
---|---|---|---|
TypeA.& | Pointer Type | stdatem.operator.pointer.unary | N/A |
pointer_a.* | Pointer Dereference | stdatem.operator.pointer.unary | N/A |
a.@ | Object Address | stdatem.operator.pointer.unary | N/A |
Reflection Operators
Syntax | Description | Operator Category | Operator Concept |
---|---|---|---|
^a | Reflection | stdatem.operator.reflection.unary | N/A |
#a | Reification | stdatem.operator.reflection.unary | N/A |
Range Operators
Syntax | Description | Operator Category | Operator Concept |
---|---|---|---|
a...b | Closed Range | stdatem.operator.range.binary | ClosedRange |
a..<b | Half-opened Range | stdatem.operator.range.binary | HalfOpenedRange |
a<..b | Half-opened Range | stdatem.operator.range.binary | HalfOpenedRange |
a<.<b | Opened Range | stdatem.operator.range.binary | OpenedRange |
...a | One-sided Range | stdatem.operator.range.unary | OneSidedRange |
a... | One-sided Range | stdatem.operator.range.unary | OneSidedRange |
Optional Operators
Syntax | Description | Operator Category | Operator Concept |
---|---|---|---|
a ?? b | Unwrapping with Default Value | stdatem.operator.optional.binary | Unwrapping |
a.? | Throwable Unwrapping, equivalent to a ?? throw UnwrapException | stdatem.operator.optional.unary | Unwrapping |
a.! | Forced Unwrapping, equivalent to a ?? unreachable | stdatem.operator.optional.unary | Unwrapping |
a?.b | Throwable Optional Chaining | stdatem.operator.optional.binary | Unwrapping |
a!.b | Forced Optional Chaining | stdatem.operator.optional.binary | Unwrapping |
Other Operators
Syntax | Description | Operator Category | Operator Concept |
---|---|---|---|
a as TypeB | Type Casting | stdatem.operator.misc.binary | As |
a as? TypeB | Optional Type Casting | stdatem.operator.misc.binary | As |
a as! TypeB | Forced Type Casting | stdatem.operator.misc.binary | As |
TypeA is TypeB | Type Querying | stdatem.operator.misc.binary | Is |
a.b | Member Access | stdatem.operator.misc.binary | MemberAccess |
a[b] | Array Element Access | stdatem.operator.misc.binary | ArrayElementAccess |
a.[b] | Tuple Value Element Access | stdatem.operator.misc.binary | TupleValueAccess |
a::[b] | Tuple Type Element Access | stdatem.operator.misc.binary | TupleTypeAccess |
new TypeA | Memory Allocation | stdatem.operator.misc.unary | New |
delete a | Memory Deallocation | stdatem.operator.misc.unary | Delete |
?TypeA | Optional Type | stdatem.operator.misc.unary | N/A |
dyn TypeA | Type-erased Type | stdatem.operator.misc.unary | N/A |
a~b | Type | stdatem.operator.misc.binary | N/A |